package chapter02.part04;

import chapter02.FileUtil;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.*;

/**
 * 复制 移动 删除文件
 * 
 * @author insight
 * @since 2021/8/18
 */
public class ChangeFileTest {
    public static void main(String[] args) throws IOException {
        // 复制
        Path src = Paths.get("chapter02-io/src/main/resources/data.txt");
        Path des = Paths.get("chapter02-io/src/main/resources/data.txt.bk");
        Files.copy(src, des);
        
        // 剪切 可以添加操作选项
        // 比如覆盖已有文件
        Files.move(src, des, StandardCopyOption.REPLACE_EXISTING);
        
        // 删除
        Files.deleteIfExists(src);

        // 流与路径互转
        // 相当于把内容复制到流上
        // 读取一个文件 复制到流
        OutputStream out =
                Files.newOutputStream(Paths.get(FileUtil.TEST_FILE_PATH));
        Files.copy(des, out);
        out.flush();
        // 读取一个流 复制到文件
        InputStream in =
                Files.newInputStream(Paths.get(FileUtil.TEST_FILE_PATH));
        // 先读入一个整数
        in.readNBytes(4);
        // 之后只写入一个整数 因为先被读取了一个?
        Files.copy(in, des, StandardCopyOption.REPLACE_EXISTING);
    }
}